package com.xiaoshuidi.cloud.module.contract.service.contract;

import com.xiaoshuidi.cloud.framework.common.pojo.PageResult;
import com.xiaoshuidi.cloud.module.contract.controller.admin.contract.vo.customerCompany.*;
import com.xiaoshuidi.cloud.module.contract.dal.dataobject.contract.CustomerCompanyDO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;

/**
 * 企业客户 Service 接口
 *
 * @author 合房租赁
 */
public interface CustomerCompanyService {

    /**
     * 创建企业客户
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createCustomerCompany( CustomerCompanyCreateReqVO createReqVO);

    /**
     * 更新企业客户
     *
     * @param updateReqVO 更新信息
     */
    void updateCustomerCompany( CustomerCompanyUpdateReqVO updateReqVO);

    /**
     * 删除企业客户
     *
     * @param id 编号
     */
    void deleteCustomerCompany(Long id);

    /**
     * 获得企业客户
     *
     * @param id 编号
     * @return 企业客户
     */
    CustomerCompanyRespVO getCustomerCompany(Long id);

    /**
     * 获得企业客户列表
     *
     * @param ids 编号
     * @return 企业客户列表
     */
    List<CustomerCompanyDO> getCustomerCompanyList(Collection<Long> ids);

    /**
     * 获得企业客户分页
     *
     * @param pageReqVO 分页查询
     * @return 企业客户分页
     */
    PageResult<CustomerCompanyDO> getCustomerCompanyPage(CustomerCompanyPageReqVO pageReqVO);

    /**
     * 根据ID查询企业信息
     * @param id
     * @return: com.xiaoshuidi.cloud.module.contract.dal.dataobject.contract.CustomerCompanyDO
     */
    CustomerCompanyDO getCompanyDoById(Long id);

    /**
     * 分页查询企业房间信息
     * @param pageVO
     * @return: com.xiaoshuidi.cloud.framework.common.pojo.PageResult<com.xiaoshuidi.cloud.module.contract.controller.admin.contract.vo.customerCompany.CompanyRentRoomRespVO>
     */
    PageResult<CompanyRentRoomRespVO> getCompanyRentRoomPage(CompanyRentRoomPageReqVO pageVO);

    /**
     * 变更水电承担方
     * @param reqVO
     * @return: java.lang.Boolean
     */
    void changeHydropowerTenantry(CompanyChangeUndertakerReqVO reqVO);

    /**
     * 禁用企业客户
     *
     * @param id 编号
     */
    void disabledCustomerCompany(Long id);

}
